A multi-core processor architecture is implemented by a single processor that plugs directly into a single processor socket, and that single processor will have one or more “processor cores”. Those skilled in the art also refer to processor cores as “CPU cores”. The operating system perceives each processor core as a discrete logical processor. A multi-core processor can perform more work within a given clock cycle because computational work is spread over to the multiple processor cores.
Hardware threads are the one or more computational objects that share the resources of a core but architecturally look like a core from an application program's viewpoint. As noted above, a core is the one or more computational engines in a processor. Hardware multithreading (also known as HyperThreading) is a technology that allows a processor core to act like two or more separate “logical processors” or “computational objects” to the operating system and the application programs that use the processor core. In other words, when performing the multithreading process, a processor core executes, for example, two threads (streams) of instructions sent by the operating system, and the processor core appears to be two separate logical processors to the operating system. The processor core can perform more work during each clock cycle by executing multiple hardware threads. Each hardware thread typically has its own thread state, registers, stack pointer, and program counter.
Operating systems today treat each hardware thread of a multithreaded CPU core as an individual processor. This causes many applications to be re-written or modified in order to manage the additional processors and to also ensure that the application tasks are scheduled appropriately on the threads so that they optimize the benefits of hardware multithreading.
Additionally, there are certain operations such as real-time scheduling and real-time application response that are not well suited to multithreaded CPU cores. Applications with this type of behavior cannot tolerate the hardware context switching to another application when the application is in the middle of a critical section. If each hardware thread is treated as an independent CPU, it is not reasonable to yield the alternate hardware thread for long periods of time while the first hardware thread is running a critical real-time application. Operating system vendors currently treat each hardware thread of a multithreaded CPU core as an independent CPU. As a result, the problems discussed above exist in all of these prior implementations.
Therefore, the current technology is limited in its capabilities and suffers from at least the above constraints and deficiencies.